package org.example.infrastructure.persistence.orm;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.example.domain.model.entity.url.UrlShortenerAccessStats;
import org.example.domain.model.entity.url.req.UrlShortenerGroupStatsReq;
import org.example.domain.model.entity.url.req.UrlShortenerStatsReq;

import java.util.List;

@Mapper
public interface UrlShortenerAccessStatsMapper extends BaseMapper<UrlShortenerAccessStats> {

    void insertUrlShortenerAccessStats(UrlShortenerAccessStats urlShortenerAccessStats);

    /** 根据短链接获取指定日期内基础监控数据 */
    List<UrlShortenerAccessStats> listStatsByUrlShortener(@Param(value = "param") UrlShortenerStatsReq urlShortenerStatsReq);

    /** 根据短链接获取指定日期内小时基础监控数据 */
    List<UrlShortenerAccessStats> hourStatsByUrlShortenerList(@Param(value = "param") UrlShortenerStatsReq urlShortenerStatsReq);

    /** 根据短链接获取指定日期内小时基础监控数据 */
    List<UrlShortenerAccessStats> weekdayStatsByUrlShortenerList(@Param(value = "param")UrlShortenerStatsReq urlShortenerStatsReq);

    /** 根据分组获取指定日期内基础监控数据 */
    List<UrlShortenerAccessStats> urlShortenerAccessStatsByGroupList(@Param(value = "param")UrlShortenerGroupStatsReq urlShortenerGroupStatsReq);

    /** 根据分组获取指定日期内小时基础监控数据 */
    List<UrlShortenerAccessStats> hourStatsByGroupList(@Param(value = "param") UrlShortenerGroupStatsReq urlShortenerGroupStatsReq);

    /** 根据分组获取指定日期内周基础监控数据 */
    List<UrlShortenerAccessStats> weekdayStatsByGroupList(@Param(value = "param") UrlShortenerGroupStatsReq urlShortenerGroupStatsReq);
}
